﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL;
using BOL;
using Website.Logger;
using System.Drawing;
using System.Web.Script.Services;
using System.Web.Services;
using UtilityExtensions;
using System.Data.SqlClient;


namespace UILGestion.ObraAdmin.Presupuesto
{
    public partial class PresupuestoReadForm : System.Web.UI.Page
    {

        [WebMethod(), ScriptMethod()]
        public static string GetRecursos(String prefixText, String contextKey)
        {

            InsumoBL bol = new InsumoBL();
            return bol.getInsumo2All(prefixText, 20);

        }


        public PresupuestoReadForm()
        {
            bol = new BOL.PresupuestoBL();
        }

        private BOL.PresupuestoBL bol;

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!this.IsPostBack)
                {
                    idInternal.Value = (string)Request.QueryString["id"];
                    idObra.Value = (string)Request.QueryString["idObra"];
                    type.Value = (string)Request.QueryString["type"];
                  
                 paginaAnt.Value = Page.Request.UrlReferrer.AbsoluteUri ;
                    menuObraCtrl1.loadMenu(idObra.Value.ToInt(), Request.AppRelativeCurrentExecutionFilePath);
                    FormatForm();
                }
            }
            
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }
       
        private void FormatForm()
        {

            var presupuesto = DbUtil.Db.Presupuesto.SingleOrDefault(p => p.idInternal == idInternal.Value.ToInt());

            numdocumentoLbl.Text = presupuesto.codigo;
            descripcionTxt.Text = presupuesto.descripcion;
            abreviacionTXT.Text = presupuesto.abreviacion;
            fechaLBL.Text = presupuesto.fecha.Value.ToShortDateString();
            monedaTxt.Text = presupuesto.Moneda.descripcion;
            estadosTxt.Text = presupuesto.GrupoDatoitem.descripcion;
            tipoObraLBL.Text = presupuesto.Obra.TipoObra.descripcion;
            tipoCambioLBL.Text = presupuesto.Obra.tipoCambio.ToString();
            aprobador1TXT.Text =presupuesto.idEmpleadoRevisor==null?"": presupuesto.Empleado1.descripcion;

            aprobador2TXT.Text = presupuesto.idEmpleadoAprob == null ? "" : presupuesto.Empleado.descripcion;

            EditarBTN.Visible = false;
           
            // si son importador del S10 no deben ser editados
            // para el caso de presupuesto acabado puedes editar
          
                    //RL: caso que es acabado, si puedes editar
                    //RL: caso que se Promosion, No puedes editar
                    //RL: caso de Casco, si editar luego de aprobar
               
                DesaprobarBTN.Visible = false;
                AprobarBTN.Visible = false;

                if (presupuesto.idEstado != 26)
                {
                    EditarBTN.Visible = true;
                }

                if (presupuesto.Obra.TipoObra.bitViewPresupuestoEditEver.Value)
                {       EditarBTN.Visible = true;
                    
                }
                if (presupuesto.Obra.TipoObra.bitViewPresupuestoNeedPass.Value)
                {
                    if (presupuesto.idEstado == 26)
                    {
                        DesaprobarBTN.Visible = true;
                    }
                    else
                    {
                        AprobarBTN.Visible = true;
                    }
                    
                }
            // el tipo origen del presupuesto importante su este es un adicional depresupuesto 

                if (presupuesto.tipoOrigen==2)
                {
                    
                        DesaprobarBTN.Visible = false;
                        AprobarBTN.Visible = false;
                    

                }
            

            setestadistica();

            PartidaGrid1.Load(idInternal.Value, 
                presupuesto.idEstado.Value,
                presupuesto.Obra.TipoObra);
            


           
        }
        public void setestadistica()
        {

            var presupuesto = DbUtil.Db.Presupuesto.Single(p => p.idInternal == idInternal.Value.ToInt());

            
            totalLBL.Text = String.Format("{0} {1:N}",presupuesto.Moneda.descripcion, presupuesto.monto);
            totalUpdatePanel.Update();
        }
           
        protected void Save(object sender, EventArgs e)
        {
            try{

            //if (((LinkButton)sender).ID == EliminarLBtn.ID)
            //{
            //    bol.Delete(idInternal.Value.ToInt());
            //    Response.Redirect("{0}ListForm.aspx".Fmt(entidad.Value));
            //}
            //if (((LinkButton)sender).ID == GuardarLBtn.ID)
            //{
            //    if (type.Value == "A")
            //        idInternal.Value = bol.Add(RUCTxt.Text,
            //                                                descripcionTxt.Text).ToString();
            //    if (type.Value == "E")
            //        bol.Update(idInternal.Value.ToInt(),
            //                                                    RUCTxt.Text,
            //                                                    descripcionTxt.Text).ToString();

            //    //coleccion de proyecto
               
            //    Response.Redirect("{0}ReadForm.aspx?id={1}".Fmt(entidad.Value,idInternal.Value),false); 
                
            //}


            }

            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('"+sqlex.Message.Replace("'","").Replace("\r","").Replace("\n","")+"');", true);
                //"uniqueKey" + DateTime.Now, "alert('"+sqlex.Message.Replace("'","").Replace("\r","").Replace("\n","")+"');", true);

            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }

        protected void accion(object sender, EventArgs e)
        {
            try
            {
                Button boton=(Button)sender;

                if (boton.ID == anteriorButton.ID)
                {
                    var rendicion = new DAL.Presupuesto();
                    int anterior = rendicion.getidAnterior(DbUtil.Db, int.Parse(idInternal.Value), int.Parse(idObra.Value));
                    Response.Redirect("RendicionEditForm.aspx?idObra=" + idObra.Value + "&id=" + anterior.ToString(), true);

                }
                if (boton.ID == siguienteButton.ID)
                {
                    var rendicion = new DAL.Presupuesto();
                    int siguiente = rendicion.getidSiguiente(DbUtil.Db, int.Parse(idInternal.Value), int.Parse(idObra.Value));
                    Response.Redirect("RendicionEditForm.aspx?idObra=" + idObra.Value + "&id=" + siguiente.ToString(), true);

                }
                if (((Button)sender).ID == refreshBTN.ID)
                {
                    FormatForm();

                }

                if (((Button)sender).ID == nuevoBTN.ID)
                {
                    Response.Redirect("PresupuestoEditForm.aspx?type=A&idObra=" + idObra.Value, true);
                }
                if (((Button)sender).ID == EditarBTN.ID)
                {
                    //no puedes editar si esta aprobado
                  Response.Redirect("PresupuestoEditForm.aspx?type=E&id=" + idInternal.Value + "&idObra=" + idObra.Value, false);

                }
                if (((Button)sender).ID == eliminarBTN.ID)
                {
                    PresupuestoBL presupuesto = new PresupuestoBL();
                    bool result = presupuesto.delete(int.Parse(idInternal.Value));

                    Response.Redirect("PresupuestoListForm.aspx?idObra={0}".Fmt(idObra.Value));

                    
                }

                if (((Button)sender).ID == AprobarBTN.ID)
                {

                    BOL.PresupuestoBL bol = new PresupuestoBL();
                    bol.updateAprobacion(int.Parse(idInternal.Value));
                    string direccion = String.Format("PresupuestoReadForm.aspx?idObra={0}&id={1}", idObra.Value, idInternal.Value);
                    Response.Redirect(direccion, true);
                }

                if (((Button)sender).ID == DesaprobarBTN.ID)
                {

                    BOL.PresupuestoBL bol = new PresupuestoBL();
                    bol.updateDesAprobacion(int.Parse(idInternal.Value));

                    string direccion = String.Format("PresupuestoReadForm.aspx?idObra={0}&id={1}", idObra.Value, idInternal.Value);
                    Response.Redirect(direccion, true);
                }


                if (((Button)sender).ID == ListaBTN.ID)
                {
                    Response.Redirect("~/ObraAdmin/PresupuestoListForm.aspx?idObra={0}".Fmt(idObra.Value), true);
                }

            }

            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "").Replace("\r", "").Replace("\n", "") + "');", true);
                //"uniqueKey" + DateTime.Now, "alert('"+sqlex.Message.Replace("'","").Replace("\r","").Replace("\n","")+"');", true);

            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }

      

    }
}